#if 0
	shc Version 4.0.3, Generic Shell Script Compiler
	GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>

	shc -f clean_dev_cache.sh -o MacDevCacheCleaner 
#endif

static  char data [] = 
#define      opts_z	1
#define      opts	((&data[0]))
	"\155"
#define      tst1_z	22
#define      tst1	((&data[2]))
	"\274\136\016\354\330\216\276\364\165\270\020\021\114\111\121\203"
	"\101\256\304\365\045\206\305\352"
#define      chk1_z	22
#define      chk1	((&data[28]))
	"\321\111\055\061\352\236\145\113\220\112\377\161\133\043\242\044"
	"\126\060\375\332\012\224\255\374\343\116\360\204\065\177"
#define      inlo_z	3
#define      inlo	((&data[55]))
	"\236\334\130"
#define      tst2_z	19
#define      tst2	((&data[60]))
	"\202\217\132\024\053\104\300\034\154\010\141\375\206\302\217\200"
	"\341\162\102\074\037\024"
#define      lsto_z	1
#define      lsto	((&data[80]))
	"\163"
#define      xecc_z	15
#define      xecc	((&data[82]))
	"\276\146\033\147\342\144\006\210\157\154\171\201\357\361\343\323"
#define      msg2_z	19
#define      msg2	((&data[100]))
	"\370\357\044\215\070\141\252\257\241\372\311\157\165\372\262\364"
	"\043\307\137\320\146\052"
#define      rlax_z	1
#define      rlax	((&data[119]))
	"\066"
#define      text_z	5558
#define      text	((&data[982]))
	"\103\012\362\352\254\057\360\251\231\303\345\006\343\332\343\066"
	"\116\244\270\372\034\210\072\156\261\123\212\335\031\072\026\321"
	"\310\330\066\111\257\105\045\166\117\355\335\212\105\011\353\164"
	"\343\310\227\012\115\236\240\277\376\360\301\055\136\015\201\220"
	"\037\022\376\232\211\137\363\202\221\120\167\132\160\310\233\116"
	"\006\115\204\356\032\174\037\330\263\064\143\073\365\360\076\177"
	"\205\317\322\377\316\022\277\020\330\076\260\057\365\212\113\166"
	"\143\167\043\152\007\366\146\145\317\153\203\211\247\364\160\360"
	"\033\351\110\214\013\150\215\204\041\316\352\352\253\274\157\247"
	"\001\354\327\135\216\024\006\165\005\217\026\066\011\040\241\272"
	"\175\116\006\257\155\343\373\066\062\135\252\222\200\306\214\257"
	"\032\041\311\335\376\310\075\147\106\375\345\240\167\365\235\204"
	"\203\011\036\327\015\205\040\042\041\166\224\203\227\114\033\317"
	"\311\334\165\143\256\237\030\004\346\157\363\345\125\361\110\305"
	"\174\231\356\117\047\027\222\176\036\303\111\202\145\163\341\245"
	"\047\006\045\171\001\250\170\275\321\326\125\304\351\175\160\265"
	"\334\311\344\312\204\243\122\110\323\353\067\023\154\141\006\056"
	"\341\007\126\333\035\150\067\354\032\350\201\077\076\166\357\307"
	"\323\014\127\364\074\016\334\163\325\151\166\073\334\011\275\121"
	"\227\113\114\300\075\145\224\316\160\262\303\021\164\155\107\172"
	"\375\322\275\377\243\274\240\327\153\306\343\245\373\165\161\032"
	"\023\307\044\241\330\075\022\114\036\337\236\330\034\366\265\102"
	"\370\071\015\117\327\254\170\370\215\271\207\361\152\307\327\304"
	"\211\031\101\267\336\364\251\371\202\076\322\166\060\240\154\134"
	"\014\252\025\315\277\147\167\061\111\037\202\365\157\317\215\235"
	"\254\254\173\050\142\244\004\201\232\041\056\344\202\163\227\171"
	"\373\317\350\062\266\206\131\164\013\352\204\233\350\274\101\172"
	"\357\047\270\277\350\242\202\032\005\041\131\326\267\365\223\240"
	"\374\152\107\101\215\335\242\311\150\155\101\347\360\372\114\252"
	"\151\332\276\050\253\312\253\112\237\137\300\065\122\110\201\173"
	"\052\367\332\206\173\131\242\113\350\232\310\256\313\253\026\343"
	"\026\176\350\042\160\263\104\177\000\325\066\006\006\142\175\201"
	"\007\322\263\134\257\113\357\141\124\167\047\036\160\325\355\272"
	"\261\144\126\101\207\243\141\224\151\350\342\033\252\232\345\256"
	"\366\122\071\124\052\330\360\110\234\133\066\151\015\076\104\200"
	"\324\275\246\305\370\100\036\234\005\004\343\167\000\172\217\057"
	"\136\245\261\032\136\062\275\266\345\066\200\341\365\120\135\257"
	"\160\313\357\325\125\075\131\166\121\215\236\373\273\356\361\003"
	"\207\240\275\237\010\166\302\001\046\310\216\151\032\037\345\305"
	"\145\344\006\014\006\112\031\234\054\266\112\201\255\355\023\220"
	"\064\304\265\317\132\224\206\027\166\121\243\006\324\217\365\227"
	"\313\373\221\274\033\374\200\011\360\354\042\275\247\156\260\022"
	"\245\012\130\374\106\233\011\047\031\225\066\074\321\317\355\035"
	"\262\133\271\360\224\305\246\331\036\137\155\344\332\320\125\074"
	"\146\307\155\122\263\012\260\116\066\266\331\164\020\336\003\034"
	"\105\254\076\154\063\304\051\257\001\356\373\307\170\052\230\240"
	"\270\027\130\263\030\234\052\030\177\040\141\156\342\335\334\014"
	"\044\173\155\041\050\046\113\000\066\334\242\177\032\210\130\107"
	"\004\236\212\151\152\153\365\232\371\134\244\331\376\322\227\134"
	"\100\050\223\055\155\300\367\330\274\055\373\176\230\326\045\304"
	"\022\004\024\102\021\214\375\113\232\046\063\126\257\051\271\370"
	"\146\334\217\020\067\241\023\275\164\177\147\325\166\124\046\014"
	"\272\236\110\077\330\037\216\257\055\053\140\066\017\246\301\022"
	"\327\371\350\006\114\355\371\144\156\000\137\216\232\225\124\226"
	"\233\367\166\001\004\265\260\110\317\211\231\264\365\374\140\131"
	"\103\117\260\070\251\107\073\146\161\127\022\163\012\003\323\040"
	"\126\356\174\127\227\102\103\173\135\301\322\242\270\207\063\251"
	"\064\052\347\142\305\124\135\357\243\151\007\345\027\275\362\012"
	"\334\044\024\321\022\246\243\266\376\060\053\124\200\333\272\372"
	"\002\203\170\004\227\276\216\264\232\256\257\257\142\005\357\000"
	"\157\332\042\366\367\360\335\112\003\010\256\263\027\163\020\003"
	"\242\167\072\120\122\371\112\254\307\040\242\375\052\013\164\013"
	"\240\324\042\270\345\101\202\242\126\012\055\037\161\136\144\321"
	"\163\043\054\131\026\015\105\017\366\161\163\103\270\307\103\345"
	"\353\344\037\151\162\044\204\033\340\255\342\114\251\070\325\163"
	"\061\035\260\001\276\327\341\107\267\254\156\346\234\057\315\300"
	"\243\134\170\152\045\226\047\036\360\101\107\134\314\230\037\173"
	"\031\222\125\062\161\142\057\112\205\124\132\202\157\013\371\367"
	"\036\207\055\212\143\242\035\215\163\357\021\341\013\003\170\067"
	"\053\361\001\217\143\213\074\113\357\307\306\077\107\353\206\367"
	"\234\076\057\122\062\373\113\002\127\177\053\340\373\352\265\160"
	"\273\372\172\153\003\127\277\363\077\266\117\114\375\006\213\254"
	"\211\277\126\100\316\160\141\002\153\020\145\152\172\134\043\164"
	"\213\060\117\204\354\171\324\347\171\225\234\105\121\047\144\234"
	"\366\226\204\335\272\054\101\061\335\110\150\273\350\246\063\236"
	"\363\164\342\046\245\253\370\102\077\350\323\337\321\260\314\275"
	"\203\004\043\315\343\315\361\355\237\141\224\117\350\264\274\126"
	"\103\375\232\011\045\277\346\134\106\227\172\212\002\027\243\376"
	"\007\135\022\271\321\375\367\375\064\115\170\037\102\010\115\056"
	"\034\344\235\272\112\267\350\255\332\155\123\342\235\124\110\071"
	"\041\337\165\355\354\002\014\025\310\152\175\064\176\100\336\073"
	"\011\131\212\343\310\032\362\144\234\364\166\305\141\017\345\126"
	"\133\206\122\336\103\051\057\361\223\316\303\160\247\301\160\237"
	"\365\141\305\255\134\062\311\310\060\127\255\146\050\242\156\167"
	"\130\056\067\265\227\101\166\224\035\252\140\204\212\210\050\330"
	"\165\117\161\034\023\067\247\151\144\304\147\203\243\351\235\232"
	"\013\212\341\370\202\052\320\350\162\356\270\251\361\141\052\372"
	"\350\215\367\043\234\141\103\222\265\064\323\217\027\140\306\002"
	"\145\202\340\306\206\235\245\070\170\330\107\145\230\344\030\314"
	"\362\203\070\021\276\011\305\103\116\047\254\225\014\251\270\104"
	"\066\044\072\235\360\162\144\105\067\070\207\371\021\057\304\165"
	"\347\020\071\156\251\165\071\122\102\065\177\327\124\047\245\310"
	"\230\014\143\000\020\020\162\074\357\067\033\146\126\251\167\067"
	"\263\017\107\157\266\222\304\157\124\344\240\221\025\221\263\132"
	"\215\137\020\306\143\333\066\111\236\364\215\105\167\321\321\205"
	"\377\140\057\224\277\344\357\137\127\020\236\052\263\015\057\233"
	"\365\105\162\261\242\113\210\342\124\201\153\270\160\315\026\134"
	"\243\112\165\275\314\063\221\120\126\321\050\011\207\315\261\317"
	"\013\253\053\243\377\331\014\134\242\220\177\230\133\351\061\316"
	"\076\215\247\163\140\202\242\360\051\115\346\062\363\110\216\107"
	"\314\124\017\276\316\217\244\005\273\230\113\326\207\354\321\102"
	"\050\370\214\270\232\304\242\160\235\031\165\156\212\146\050\131"
	"\135\244\141\127\112\310\363\013\216\226\150\050\264\374\176\060"
	"\153\274\015\263\024\063\246\166\115\240\105\106\262\220\153\212"
	"\245\324\263\225\137\344\007\206\007\066\203\207\310\224\007\150"
	"\001\010\147\077\202\366\220\065\351\357\007\371\336\076\050\062"
	"\060\333\102\342\350\163\332\207\127\271\021\230\201\364\154\217"
	"\107\136\213\010\063\020\115\132\122\101\175\004\352\244\373\043"
	"\206\062\303\130\355\171\246\311\375\062\205\305\132\170\221\005"
	"\021\030\251\001\121\120\127\307\153\013\102\377\353\113\360\153"
	"\262\325\123\075\164\137\252\234\334\375\266\306\126\025\065\055"
	"\012\126\103\062\253\017\061\254\276\236\353\171\050\065\320\012"
	"\150\142\270\075\270\043\143\331\027\126\255\334\267\312\227\172"
	"\313\002\017\055\066\305\324\310\167\306\253\273\104\140\364\171"
	"\120\272\014\346\065\006\040\222\112\327\035\105\127\117\046\215"
	"\030\002\350\155\133\122\261\136\026\114\253\241\034\046\270\022"
	"\301\042\251\370\333\066\212\032\170\321\033\264\232\207\070\333"
	"\050\001\237\207\061\146\206\342\266\166\056\260\114\161\071\200"
	"\020\306\301\045\344\224\172\164\334\070\064\011\341\002\032\242"
	"\173\260\277\250\026\120\124\134\030\066\117\375\140\056\251\270"
	"\021\312\272\172\227\124\130\101\017\326\103\044\103\235\140\013"
	"\164\256\143\337\315\114\313\003\177\320\202\146\300\021\055\350"
	"\253\254\162\115\073\377\320\341\052\221\100\261\330\241\334\261"
	"\073\147\344\333\160\007\122\207\350\310\103\127\212\010\370\131"
	"\313\215\373\200\350\106\154\142\132\300\043\172\135\062\245\257"
	"\256\047\021\110\326\132\264\162\257\210\343\211\350\233\344\102"
	"\310\135\142\300\336\315\012\141\223\160\273\143\061\046\207\115"
	"\131\131\072\210\220\072\265\372\261\226\323\336\356\372\105\137"
	"\337\352\252\376\136\111\224\000\027\321\203\022\226\304\160\045"
	"\231\045\361\033\376\344\322\030\322\221\370\130\106\274\103\326"
	"\135\247\042\271\261\024\335\053\131\040\346\116\334\134\130\173"
	"\142\334\145\141\351\244\327\263\253\170\246\376\015\313\025\075"
	"\071\303\041\327\066\155\343\136\333\237\312\271\200\001\073\116"
	"\124\077\107\161\015\016\316\360\147\275\150\074\071\322\251\267"
	"\263\210\222\345\300\044\254\117\140\260\145\200\327\034\011\152"
	"\276\066\311\232\340\076\344\073\255\143\372\167\045\251\232\136"
	"\320\105\071\127\325\345\017\217\204\275\116\230\246\052\256\045"
	"\127\357\270\252\060\310\021\042\176\355\330\343\273\056\241\011"
	"\135\037\257\147\206\070\277\115\036\264\077\032\243\353\350\152"
	"\157\033\264\346\300\235\327\144\175\024\276\020\220\224\210\302"
	"\357\074\373\135\207\366\035\354\137\361\316\357\105\253\336\266"
	"\242\317\126\266\115\054\113\044\006\262\366\366\274\134\152\323"
	"\375\013\160\135\051\137\211\107\024\123\233\252\102\342\304\355"
	"\265\065\002\271\147\360\106\034\214\052\363\353\256\074\212\171"
	"\325\035\063\032\375\165\116\260\247\204\001\222\024\210\362\106"
	"\274\003\000\345\357\320\023\372\072\331\123\202\207\171\232\346"
	"\106\252\142\234\324\372\131\304\154\000\354\016\125\332\127\272"
	"\273\324\147\103\002\345\046\277\025\045\000\260\173\310\006\243"
	"\366\156\327\333\313\133\021\163\240\351\202\134\246\164\310\350"
	"\223\377\143\275\224\313\125\300\115\056\163\325\162\002\262\047"
	"\314\074\335\212\166\142\071\153\025\121\320\357\112\264\234\071"
	"\275\371\152\131\124\051\120\355\314\103\101\066\317\153\366\360"
	"\343\110\224\041\113\203\205\155\273\043\236\256\213\076\311\233"
	"\135\267\156\012\152\060\034\010\104\314\353\157\304\232\030\271"
	"\322\112\142\260\306\235\335\162\256\333\366\162\304\272\155\210"
	"\023\313\130\203\340\321\313\024\150\251\151\063\044\041\335\012"
	"\067\012\170\232\131\344\377\271\224\274\161\215\340\202\105\232"
	"\157\121\264\162\120\044\321\211\170\012\225\241\011\234\247\071"
	"\335\066\076\335\270\114\126\234\366\142\342\372\301\137\076\371"
	"\076\217\014\226\313\161\147\016\203\256\022\371\356\247\134\133"
	"\002\336\022\376\215\314\310\315\162\044\156\125\217\041\152\261"
	"\140\370\136\113\005\012\053\062\247\142\125\071\060\176\115\265"
	"\147\032\002\074\257\260\374\212\067\134\104\160\050\166\007\366"
	"\056\262\132\025\347\303\134\230\256\005\373\176\143\062\170\341"
	"\117\322\123\175\203\245\271\121\045\373\152\204\037\262\071\125"
	"\024\165\125\256\116\054\375\330\045\366\362\242\014\162\177\354"
	"\302\224\110\326\053\135\352\152\034\251\167\365\067\166\301\032"
	"\046\201\070\072\170\373\060\175\115\245\311\033\103\022\210\002"
	"\115\151\161\340\040\030\216\113\351\342\153\121\261\013\370\357"
	"\221\147\151\250\043\323\261\205\112\147\304\364\214\140\077\107"
	"\022\263\362\065\337\066\330\337\105\040\235\311\122\376\325\325"
	"\201\367\202\105\132\066\312\214\177\307\074\037\257\104\060\237"
	"\003\115\065\233\374\130\323\232\257\164\234\231\263\125\154\341"
	"\362\126\341\210\365\165\071\113\226\364\167\374\335\242\154\063"
	"\122\000\341\313\362\374\350\032\275\224\141\365\077\054\133\142"
	"\101\227\211\105\244\273\010\107\247\133\330\016\207\217\025\117"
	"\320\064\334\117\367\036\347\352\134\361\366\364\347\070\224\210"
	"\200\023\147\125\064\302\375\176\037\257\215\206\073\170\322\141"
	"\053\236\244\377\231\121\212\245\010\370\357\116\027\330\062\176"
	"\161\304\246\226\261\332\215\040\052\232\324\361\106\377\216\244"
	"\327\004\037\000\312\051\050\035\003\066\017\012\271\020\145\210"
	"\247\166\202\377\161\077\260\355\205\176\235\223\130\171\304\024"
	"\256\154\306\234\350\156\315\111\112\225\000\250\116\132\377\025"
	"\162\103\107\311\371\256\241\270\300\124\035\331\126\174\205\252"
	"\022\346\107\141\250\175\055\146\010\114\242\150\066\257\200\257"
	"\204\253\351\342\330\126\343\333\333\056\302\215\020\266\127\267"
	"\275\137\320\375\217\306\076\112\021\024\165\334\061\263\036\367"
	"\254\332\172\225\123\355\267\377\226\253\055\307\217\322\141\350"
	"\340\214\104\377\055\356\241\166\334\240\162\020\164\244\256\360"
	"\177\062\155\313\035\136\027\255\247\221\127\176\050\251\341\215"
	"\345\060\036\007\120\363\220\330\126\004\146\166\370\247\360\306"
	"\117\347\356\323\145\233\240\132\277\000\233\025\346\003\065\061"
	"\014\266\337\220\352\017\111\134\043\377\170\002\036\142\035\051"
	"\305\153\361\074\020\117\147\241\205\145\035\146\375\351\227\001"
	"\007\053\033\156\314\005\234\001\140\376\167\151\262\134\047\351"
	"\377\330\052\024\332\063\303\074\070\032\211\364\053\014\230\123"
	"\033\230\102\141\262\354\306\021\073\133\114\036\353\375\350\342"
	"\370\104\000\124\167\161\354\260\040\343\323\352\167\100\331\372"
	"\160\311\233\031\152\177\146\271\314\021\375\232\374\341\210\134"
	"\176\213\162\266\244\114\155\130\314\156\036\123\057\333\121\350"
	"\104\371\311\240\010\304\255\163\024\115\203\237\277\376\264\217"
	"\306\164\350\126\317\024\233\377\011\330\367\013\051\171\323\035"
	"\372\256\105\272\170\051\352\201\152\111\172\153\267\250\340\045"
	"\256\251\213\034\011\013\212\026\310\167\133\160\037\020\116\011"
	"\012\016\174\062\350\124\127\105\246\322\145\032\174\376\270\060"
	"\331\012\252\224\005\112\274\020\020\370\355\362\047\201\204\065"
	"\345\206\135\340\162\304\002\020\257\334\123\016\204\037\073\220"
	"\145\333\240\056\137\122\332\056\234\123\000\137\115\300\037\065"
	"\016\353\243\232\320\202\273\041\362\166\247\215\004\174\360\366"
	"\206\226\154\237\326\026\100\251\025\054\313\215\352\046\361\120"
	"\353\105\124\250\317\216\006\025\143\103\206\137\312\325\067\207"
	"\326\134\146\130\102\047\273\022\106\324\244\305\246\036\006\145"
	"\064\212\215\322\046\313\101\233\131\323\261\077\032\377\254\153"
	"\107\233\045\234\243\253\314\035\264\362\105\304\104\307\141\263"
	"\055\166\374\352\336\270\122\145\221\027\017\120\141\247\114\374"
	"\373\342\141\342\146\334\204\373\242\154\363\344\121\034\321\215"
	"\064\333\217\277\072\364\162\305\313\144\332\032\142\153\263\175"
	"\046\034\021\001\040\100\021\010\321\011\123\077\261\015\054\272"
	"\346\332\166\013\004\124\253\204\262\155\165\336\057\072\271\347"
	"\211\127\165\343\025\023\114\270\250\166\325\213\276\070\254\257"
	"\313\215\054\346\225\102\140\002\306\262\010\315\350\126\263\103"
	"\362\155\116\354\153\174\053\275\136\353\264\336\342\353\213\172"
	"\321\031\272\226\067\107\362\122\374\255\306\154\124\025\103\367"
	"\134\074\063\377\240\210\253\231\217\156\134\346\120\303\160\321"
	"\102\136\340\140\034\365\174\042\337\202\037\012\070\377\062\372"
	"\202\225\015\101\332\211\153\342\255\151\366\000\007\040\046\012"
	"\240\310\144\057\335\142\262\226\352\273\023\035\157\210\143\166"
	"\172\171\275\162\070\366\220\076\254\140\100\364\133\046\050\311"
	"\326\002\061\036\042\161\205\125\376\126\333\257\141\066\364\013"
	"\213\210\301\240\144\071\212\017\224\002\072\372\265\213\305\261"
	"\274\307\335\042\030\103\317\157\220\143\107\257\306\133\356\113"
	"\342\215\051\217\211\012\022\027\115\320\211\062\365\127\325\237"
	"\113\251\055\126\266\066\304\130\233\032\202\160\351\026\362\024"
	"\216\175\352\225\167\132\342\242\326\004\340\202\320\163\155\051"
	"\047\225\115\301\211\306\315\254\042\261\014\031\151\056\317\024"
	"\056\152\241\154\256\220\130\336\205\063\261\033\110\164\363\035"
	"\157\360\126\351\044\347\310\340\024\375\205\003\112\255\342\270"
	"\322\055\354\324\316\120\143\330\045\337\223\276\235\353\147\057"
	"\154\205\302\156\300\257\336\253\155\015\206\167\142\342\114\332"
	"\102\256\371\307\154\364\353\001\253\050\357\150\152\253\216\246"
	"\023\011\354\363\012\002\243\150\246\141\363\117\056\242\042\152"
	"\277\301\327\224\103\117\277\016\211\154\373\133\232\053\177\232"
	"\337\232\131\165\012\136\360\061\026\343\370\112\347\330\346\327"
	"\220\160\102\034\140\310\002\172\266\307\153\141\004\240\023\274"
	"\174\200\110\225\114\252\017\365\034\024\117\327\261\335\341\331"
	"\204\075\004\172\021\060\011\305\326\061\254\216\076\111\134\170"
	"\002\277\216\304\146\314\154\162\253\055\312\025\251\076\135\350"
	"\254\226\265\257\064\124\111\105\342\301\261\316\144\320\137\136"
	"\035\030\221\002\216\355\014\166\336\306\045\250\360\360\002\003"
	"\202\251\200\203\175\326\365\333\175\107\211\044\005\372\027\014"
	"\227\226\172\270\317\152\174\073\144\175\257\006\126\045\010\104"
	"\333\102\005\276\052\257\313\243\053\255\247\352\310\251\151\350"
	"\272\041\062\213\273\047\041\025\137\041\257\116\375\172\216\342"
	"\034\270\353\006\021\110\012\210\213\102\234\212\244\246\314\243"
	"\315\075\013\156\324\134\307\020\046\212\301\001\207\063\022\032"
	"\202\055\304\152\120\220\273\236\073\070\044\231\015\322\262\343"
	"\266\215\033\301\125\045\231\164\104\040\144\043\323\066\231\123"
	"\160\317\124\340\201\124\144\313\254\145\167\334\314\010\257\067"
	"\331\141\112\021\045\212\016\166\040\315\307\300\055\133\352\030"
	"\364\256\323\336\114\367\005\364\344\221\071\127\336\126\310\150"
	"\356\343\216\003\027\136\341\212\143\222\061\070\062\355\236\366"
	"\320\031\221\216\041\333\051\331\355\046\341\227\355\343\272\152"
	"\107\156\050\111\237\346\146\261\246\304\227\002\254\122\061\057"
	"\271\053\141\256\003\007\224\044\215\021\263\137\347\227\377\264"
	"\161\071\110\144\002\246\216\056\104\161\027\154\323\123\042\033"
	"\144\346\331\136\023\306\020\261\332\137\251\030\304\132\110\305"
	"\065\355\271\120\317\376\176\134\113\206\316\103\324\371\067\210"
	"\277\271\123\062\116\034\313\277\107\255\337\235\220\230\031\177"
	"\113\150\254\263\044\232\177\077\166\346\144\145\132\004\056\313"
	"\100\236\265\331\133\000\111\353\302\345\063\160\262\202\370\011"
	"\320\364\237\137\322\250\310\033\200\110\374\310\075\235\354\261"
	"\157\355\205\333\254\322\160\003\366\232\271\170\367\142\264\250"
	"\161\115\012\015\140\323\071\176\115\314\257\275\062\106\010\003"
	"\106\077\075\302\340\121\256\076\372\322\340\070\220\222\005\007"
	"\037\240\276\134\327\021\117\115\161\313\202\330\101\066\156\234"
	"\152\112\117\067\101\226\037\242\346\037\233\116\174\074\007\105"
	"\245\377\325\160\147\237\236\151\167\173\271\112\003\037\123\143"
	"\010\157\105\317\311\037\063\175\003\057\042\276\247\257\211\125"
	"\261\135\273\143\267\127\107\170\141\330\056\127\107\054\024\021"
	"\273\357\133\162\154\037\304\103\304\237\140\142\356\143\050\117"
	"\161\151\031\354\155\006\155\070\250\076\065\343\337\034\002\340"
	"\305\116\010\320\303\375\363\137\063\322\045\037\301\244\121\101"
	"\202\330\313\312\151\301\130\374\247\031\330\057\054\115\131\153"
	"\201\152\200\231\110\346\006\312\277\311\043\246\342\272\173\157"
	"\242\315\057\213\345\306\107\146\110\342\002\302\154\042\321\045"
	"\055\367\245\115\007\057\065\375\006\127\273\260\266\210\244\066"
	"\203\026\311\203\126\150\105\021\020\155\202\164\137\371\352\213"
	"\106\220\071\040\032\056\221\240\221\125\274\276\350\343\033\264"
	"\026\033\346\016\102\226\306\116\110\114\007\017\241\136\376\257"
	"\142\315\260\307\026\336\306\165\143\004\323\047\056\206\002\373"
	"\044\300\272\101\054\150\213\252\243\271\005\316\026\265\376\277"
	"\305\127\314\150\006\045\237\302\373\146\347\131\302\217\275\025"
	"\004\204\125\320\345\106\067\331\366\057\012\364\221\160\032\017"
	"\230\000\350\120\022\100\120\246\003\321\370\320\010\021\054\207"
	"\123\363\056\213\310\104\146\171\251\107\131\101\155\253\252\112"
	"\115\134\205\243\070\365\247\241\314\025\277\076\063\036\344\226"
	"\157\233\272\217\347\265\246\253\353\000\156\075\107\231\161\077"
	"\325\377\131\173\221\201\064\010\310\270\216\054\047\224\132\115"
	"\235\334\277\011\232\217\232\254\307\055\117\223\107\116\126\377"
	"\260\343\017\077\121\114\116\117\261\242\046\214\263\022\037\333"
	"\326\355\225\274\035\150\046\202\072\060\121\245\335\372\206\177"
	"\216\274\151\332\222\365\274\374\225\032\124\065\147\257\105\114"
	"\351\022\365\027\024\262\064\053\154\046\013\363\151\335\177\143"
	"\214\357\363\136\143\227\104\245\340\241\054\104\353\300\110\235"
	"\330\365\171\230\367\145\214\052\301\335\263\351\242\207\270\030"
	"\215\217\171\236\120\340\377\336\210\152\370\377\304\304\040\313"
	"\233\015\276\023\007\172\051\122\237\003\231\160\261\076\053\335"
	"\043\313\121\203\230\033\027\246\220\034\326\353\337\224\122\236"
	"\020\013\120\224\204\332\167\373\223\223\106\000\151\034\332\264"
	"\105\263\331\030\344\026\061\033\216\065\127\072\054\025\144\265"
	"\350\027\127\077\252\144\251\021\331\040\020\136\331\254\341\240"
	"\311\116\351\224\167\344\261\221\321\120\373\366\203\326\156\101"
	"\044\331\132\066\373\221\247\363\311\373\002\205\123\135\104\364"
	"\223\076\310\237\024\120\305\104\324\002\127\271\124\240\164\317"
	"\275\176\033\324\230\261\172\056\273\244\276\034\073\212\240\245"
	"\357\201\276\133\310\064\075\201\060\363\116\113\075\301\112\224"
	"\344\266\014\005\173\265\033\067\360\032\030\026\103\065\030\131"
	"\044\032\225\004\055\224\210\362\105\050\250\220\020\052\172\375"
	"\036\353\164\034\275\152\006\345\111\077\000\144\134\371\165\373"
	"\110\257\175\210\361\375\144\372\165\134\211\010\344\204\204\241"
	"\111\204\324\164\164\332\204\176\341\030\263\314\026\324\037\121"
	"\227\351\047\270\074\211\156\131\026\332\063\046\011\021\301\057"
	"\214\016\344\216\164\206\121\150\253\264\370\103\344\261\177\027"
	"\006\305\210\124\014\157\307\077\064\362\367\240\376\126\024\136"
	"\350\273\247\255\360\161\177\062\077\050\111\245\276\071\236\334"
	"\375\247\046\016\315\142\351\166\337\171\173\077\157\332\167\343"
	"\205\200\355\216\006\277\166\263\074\132\363\306\261\226\161\255"
	"\275\320\307\324\260\020\316\112\360\152\247\270\241\312\041\115"
	"\270\262\276\053\051\340\322\143\135\077\152\147\174\167\120\031"
	"\254\005\025\374\053\267\015\025\343\216\255\227\235\237\076\174"
	"\362\107\074\037\321\040\253\157\051\370\026\051\273\120\331\017"
	"\154\362\063\115\255\157\123\171\217\045\347\054\347\163\212\010"
	"\213\042\101\246\226\254\340\141\004\205\270\053\024\106\115\143"
	"\165\234\126\321\342\141\051\200\155\322\036\211\257\323\027\330"
	"\026\071\017\225\133\134\265\321\345\265\167\112\116\250\144\031"
	"\273\237\364\346\301\162\350\274\155\271\121\202\150\136\057\340"
	"\263\354\116\205\367\114\040\153\246\354\233\246\065\321\153\147"
	"\010\024\150\013\254\056\212\121\116\247\142\032\047\344\326\224"
	"\361\272\253\161\067\226\116\126\103\203\174\311\141\125\144\015"
	"\300\345\100\372\355\216\253\307\265\353\141\120\022\047\007\124"
	"\105\213\257\037\346\376\055\100\356\035\150\332\321\154\013\241"
	"\151\233\141\037\270\237\071\131\345\220\335\247\052\162\370\273"
	"\171\005\105\216\343\154\351\323\367\064\222\231\154\247\005\066"
	"\012\070\006\207\174\330\067\347\034\131\104\227\120\175\347\175"
	"\245\344\120\224\247\262\007\320\063\233\260\045\127\341\117\164"
	"\135\251\302\361\130\264\361\132\264\312\112\334\357\276\043\215"
	"\056\106\134\275\227\047\277\213\312\311\060\227\275\044\127\103"
	"\125\352\125\015\157\225\060\300\260\100\202\311\211\255\252\307"
	"\136\233\323\031\353\047\264\006\370\005\265\174\046\237\065\156"
	"\276\000\340\311\006\013\207\102\075\133\017\320\254\144\122\100"
	"\014\103\342\314\332\043\353\153\257\204\127\274\333\075\246\256"
	"\141\046\101\133\227\326\050\333\252\137\170\371\024\261\334\377"
	"\305\136\132\024\050\146\164\073\240\113\214\100\307\134\377\053"
	"\316\176\012\107\213\074\007\026\025\045\252\236\337\102\021\205"
	"\223\240\001\254\337\356\204\365\115\011\041\277\032\240\303\304"
	"\132\177\035\001\224\235\223\072\347\113\064\010\026\202\303\022"
	"\277\275\077\016\140\111\316\176\223\077\102\361\361\202\160\310"
	"\276\361\122\311\200\154\135\061\125\220\264\125\345\241\022\153"
	"\376\302\005\252\365\326\060\124\347\146\346\071\123\300\303\331"
	"\164\242\042\055\132\256\141\321\354\267\143\004\042\004\311\155"
	"\366\352\242\131\071\162\037\143\275\064\064\357\165\335\071\320"
	"\371\274\021\171\127\333\057\036\067\364\245\354\160\036\246\071"
	"\273\066\150\337\162\152\260\207\345\211\135\071\345\140\073\276"
	"\302\057\140\356\031\147\055\115\017\353\157\056\155\355\173\216"
	"\202\250\160\311\127\205\364\070\250\146\146\301\113\267\175\127"
	"\244\171\146\145\171\234\024\135\060\325\310\325\154\236\125\171"
	"\217\264\341\323\322\027\300\341\134\362\253\162\221\342\140\304"
	"\042\337\205\243\036\023\200\266\013\257\107\004\347\157\244\242"
	"\111\024\237\113\105\342\240\064\355\173\101\156\266\241\205\171"
	"\115\153\217\140\227\371\214\137\134\231\122\344\055\334\024\345"
	"\011\343\266\236\377\213\137\213\171\326\207\142\313\256\146\277"
	"\325\160\075\262\370\300\321\040\316\040\143\174\276\016\340\374"
	"\033\133\005\266\371\042\257\204\257\240\136\331\344\100\107\055"
	"\265\031\321\121\256\065\323\322\123\006\355\036\045\062\273\337"
	"\155\010\230\127\125\302\144\147\125\322\367\336\175\172\350\311"
	"\342\151\074\075\166\320\041\247\225\366\030\274\121\355\351\376"
	"\374\327\074\152\353\200\313\125\222\222\310\135\272\361\072\330"
	"\065\215\021\226\374\036\075\015\115\300\206\200\225\202\302\125"
	"\160\030\260\071\000\355\034\123\202\061\221\314\131\276\146\060"
	"\253\034\150\001\102\147\321\155\303\055\046\146\315\352\130\313"
	"\313\203\153\053\264\176\120\063\173\205\012\117\274\346\130\306"
	"\330\134\036\126\176\101\116\206\226\124\035\105\012\260\111\352"
	"\312\336\214\323\053\176\361\344\016\255\047\270\061\005\175\043"
	"\072\334\051\025\325\340\353\027\272\363\155\054\372\307\130\234"
	"\275\044\330\334\174\105\072\361\045\000\051\365\330\104\022\205"
	"\314\343\166\032\064\371\233\132\156\127\076\270\207\137\314\100"
	"\340\214\243\013\326\213\223\370\076\373\347\003\205\353\234\001"
	"\246\143\210\363\052\040\131\035\245\224\304\206\031\136\121\276"
	"\034\216\234\375\211\252\326\146\014\033\371\371\323\025\155\131"
	"\331\032\125\243\274\013\076\263\201\124\131\327\275\233\342\142"
	"\001\027\135\232\324\230\143\337\337\076\107\373\006\017\210\261"
	"\114\315\370\223\207\000\363\062\152\041\026\112\342\313\353\012"
	"\206\333\165\162\015\040\016\001\147\333\256\044\151\100\023\353"
	"\214\174\366\127\137\007\235\313\156\051\363\371\236\144\040\126"
	"\342\135\345\124\227\246\345\075\246\135\145\125\211\174\131\221"
	"\370\102\204\111\346\335\335\170\064\123\263\144\034\242\167\303"
	"\305\154\023\161\077\216\111\203\206\206\154\266\324\307\343\064"
	"\130\073\167\311\312\262\131\356\055\142\356\143\133\363\250\351"
	"\367\224\346\014\123\113\227\035\061\230\075\313\302\374\371\204"
	"\262\162\044\152\024\370\167\245\057\201\054\105\274\372\312\072"
	"\226\053\353\115\121\153\171\345\034\056\366\137\026\071\131\013"
	"\171\126\135\070\066\076\304\174\271\106\204\307\057\017\340\055"
	"\166\366\254\122\346\054\154\054\245\133\015\154\377\033\246\266"
	"\045\325\252\120\200\333\125\176\331\060\171\123\060\260\067\352"
	"\362\152\132\324\057\157\174\206\233\252\256\377\300\045\150\334"
	"\371\120\127\130\104\262\020\116\107\067\363\202\346\137\350\022"
	"\130\151\047\024\005\023\104\115\242\145\304\203\074\247\337\103"
	"\301\374\015\240\226\156\200\365\072\172\111\265\047\302\211\141"
	"\145\271\127\052\063\325\226\172\314\005\124\351\131\073\066\136"
	"\264\344\303\030\230\303\361\015\250\302\014\104\030\073\106\314"
	"\254\137\340\241\321\314\251\135\176\330\363\111\353\124\112\162"
	"\004\101\330\261\177\324\360\237\133\330\114\072\146\163\221\112"
	"\114\210\241\125\140\123\331\000\051\073\256\133\211\046\136\375"
	"\145\033\135\065\156\304\245\363\315\173\135\373\173\165\340\260"
	"\122\053\152\034\371\142\236\063\043\130\264\047\323\004\212\141"
	"\131\063\102\007\164\001\207\054\105\221\304\206\277\230\214\253"
	"\022\373\207\107\226\341\063\332\146\361\326\046\241\327\360\237"
	"\020\372\314\323\272\134\252\050\136\050\004\050\320\032\363\272"
	"\065\166\172\246\134\051\210\154\052\021\332\330\272\372\131\023"
	"\223\100\105\015\112\113\075\163\135\015\216\214\122\063\024\021"
	"\212\314\344\261\314\130\370\133\235\354\126\003\044\203\070\206"
	"\236\032\230\320\062\064\055\363\127\245\135\264\200\302\150\024"
	"\253\345\301\060\173\167\233\146\160\257\331\276\171\260\241\226"
	"\053\022\163\056\215\076\060\253\177\134\011\117\266\140\374\071"
	"\057\012\145\230\261\014\240\140\245\145\336\065\212\045\035\211"
	"\213\231\320\240\141\335\345\322\030\345\364\306\010\156\003\046"
	"\164\241\141\355\170\101\163\157\216\026\016\341\141\323\155\174"
	"\372\105\224\217\215\340\027\270\123\137\167\277\167\351\124\366"
	"\031\250\071\007\046\200\133\373\227\201\055\102\150\124\172\041"
	"\352\136\336\374\250\102\113\345\350\347\236\343\140\100\222\336"
	"\345\314\045\371\113\237\121\140\235\354\073\250\373\277\141\117"
	"\263\207\235\336\022\050\336\151\201\167\130\010\127\036\106\237"
	"\147\226\265\124\067\001\373\041\117\322\054\144\103\320\030\043"
	"\101\070\350\046\161\237\157\210\035\261\212\333\372\004\275\252"
	"\352\056\034\146\247\040\362\016\316\363\241\326\346\343\052\301"
	"\070\305\027\337\155\263\326\232\050\102\232\045\221\357\313\032"
	"\230\222\060\354\031\306\023\037\236\200\025\132\342\322\034\131"
	"\353\065\150\014\022\270\104\053\120\351\327\011\362\266\143\316"
	"\237\076\206\234\035\043\354\223\216\220\207\041\215\231\006\355"
	"\112\174\140\244\210\375\200\063\174\056\324\036\126\005\234\276"
	"\217\334\062\146\121\022\313\271\171\255\073\020\350\051\060\372"
	"\177\316\271\165\354\063\223\371\070\345\157\077\103\003\152\305"
	"\104\126\117\126\024\332\335\243\013\324\350\374\035\214\152\174"
	"\061\030\303\073\131\164\130\315\310\064\146\307\172\120\111\211"
	"\003\310\246\370\313\352\046\344\314\123\320\124\067\357\006\064"
	"\300\047\007\315\311\106\240\241\065\364\376\306\045\114\071\363"
	"\075\300\267\042\350\245\154\332\267\266\221\016\263\053\236\144"
	"\015\230\103\112\322\020\150\131\063\276\120\033\172\071\144\202"
	"\351\070\236\032\003\133\276\036\216\011\025\225\237\337\360\061"
	"\363\066\070\171\131\040\263\366\154\025\242\141\044\202\325\041"
	"\373\026\257\275\332\005\216\223\001\006\044\240\046\024\251\057"
	"\347\071\165\221\346\150\003\327\300\143\343\153\171\307\313\144"
	"\313\211\314\105\322\176\201\155\252\042\070\004\345\305\216\236"
	"\035\072\174\374\065\046\244\172\015\101\051\335\132\315\327\261"
	"\336\232\345\273\311\250\310\042\265\147\230\335\050\005\362\046"
	"\106\365\160\147\316\102\321\302\073\106\004\220\074\274\214\325"
	"\273\332\163\076\256\216\117\157\014\163\134\373\001\111\312\236"
	"\006\243\265\374\137\274\326\210\072\001\230\142\241\170\126\071"
	"\101\015\141\125\233\115\347\175\241\103\150\050\105\255\357\322"
	"\235\221\071\167\047\354\261\042\104\074\214\163\266\254\024\070"
	"\273\367\130\262\277\333\202\175\173\022\261\016\047\324\104\103"
	"\377\342\132\110\062\321\252\236\111\106\324\125\277\175\346\073"
	"\101\056\137\152\110\212\241\262\164\246\331\310\333\133\331\100"
	"\155\366\016\055\276\121\205\312\232\247\273\036\104\335\130\100"
	"\060\362\246\274\277\263\026\167\112\152\357\026\027\227\320\340"
	"\340\270\106\036\154\002\023\167\371\046\067\102\115\313\035\373"
	"\250\320\165\154\100\011\377\247\053\105\122\112\044\023\315\133"
	"\364\040\365\307\232\243\052\124\222\043\105\016\202\134\117\206"
	"\136\333\212\037\160\370\201\044\127\022\012\175\070\313\121\073"
	"\153\177\066\376\150\036\317\225\014\017\231\057\062\125\336\325"
	"\377\355\346\300\174\227\071\032\221\241\303\226\333\037\376\053"
	"\126\070\041\061\157\357\157\004\271\042\262\310\050\202\021\144"
	"\255\350\346\111\312\010\274\004\003\335\116\243\110\146\261\064"
	"\241\316\235\154\210\146\174\124\300\321\075\341\144\174\046\143"
	"\146\141\017\165\345\233\352\165\336\220\341\121\230\204\314\346"
	"\176\100\307\272\121\064\103\272\222\011\072\321\270\063\103\275"
	"\277\111\162\030\043\202\052\172\247\213\263\362\350\157\041\177"
	"\063\021\354\336\163\360\005\056\005\221\022\231\347\030\001\115"
	"\202\172\203\043\103\341\255\063\143\214\347\353\327\246\136\030"
	"\233\375\377\333\372\244\044\225\002\104\164\104\225\363\276\314"
	"\363\157\105\274\151\235\041\361\155\275\343\367\005\040\007\361"
	"\044\030\265\150\116\265\004\034\064\301\254\157\124\064\177\062"
	"\106\361\211\110\230\133"
#define      pswd_z	256
#define      pswd	((&data[7891]))
	"\203\050\272\132\273\341\312\074\042\036\025\213\301\153\362\063"
	"\351\267\140\315\131\152\124\050\350\265\251\327\311\305\347\175"
	"\251\341\153\135\233\040\031\167\262\264\303\275\040\202\207\374"
	"\333\371\001\017\304\274\177\140\113\202\134\217\062\301\372\062"
	"\377\056\376\131\156\343\374\272\243\327\231\340\161\274\066\034"
	"\063\354\140\164\251\071\002\245\003\005\312\003\032\272\341\101"
	"\060\316\147\222\302\226\234\341\031\174\313\127\240\102\135\001"
	"\362\335\064\004\227\116\032\232\055\133\045\337\336\007\353\236"
	"\153\227\204\314\262\363\310\234\311\154\037\050\270\133\235\343"
	"\041\033\351\172\230\317\037\231\373\115\147\357\137\334\161\323"
	"\336\365\163\043\236\257\204\036\351\060\327\354\006\147\374\245"
	"\144\340\122\272\377\257\305\234\077\235\124\365\267\264\156\033"
	"\051\112\332\201\151\340\353\223\136\103\233\162\132\206\206\142"
	"\267\356\143\145\277\073\023\146\134\205\002\327\124\073\035\122"
	"\343\207\002\003\073\166\362\251\233\101\354\001\015\012\140\076"
	"\152\271\060\331\066\170\231\040\207\215\274\214\122\252\350\314"
	"\275\042\234\274\053\145\211\274\042\364\014\200\077\375\014\334"
	"\351\046\122\163\240\176\233\141\170\217\355\163\175\177\231\024"
	"\022\030\303\136\073\147\252\366\311\267\041\332\016\232\121\035"
	"\154\342\145\157\364\244\355\233\062\256\262\220\242\353\123\207"
	"\331\003\360\024\307\010\343\270\112\360\334\372\133\124\267\023"
	"\316\270\146\333\316\325\325\011\372\202\256\024\002\273\226\363"
	"\035\101\251\022\310\224\040\264\346\025"
#define      chk2_z	19
#define      chk2	((&data[8204]))
	"\273\207\210\321\266\174\032\371\140\304\340\266\056\200\060\145"
	"\200\245\346\101\375\110\217\350\351\272"
#define      msg1_z	65
#define      msg1	((&data[8240]))
	"\304\156\223\266\051\254\126\124\235\223\372\114\361\075\075\134"
	"\327\053\207\120\215\043\126\365\046\025\030\214\322\024\144\065"
	"\143\354\374\327\025\124\240\025\210\302\111\356\053\233\133\136"
	"\071\205\243\317\366\307\144\014\031\101\323\000\000\325\203\116"
	"\250\031\043\034\336\247\256\310\046\162\261\015\220\173\357\027"
	"\135\140\066\353\000\170\154\364\171\262\166\322\337\370\104"
#define      date_z	1
#define      date	((&data[8321]))
	"\306"
#define      shll_z	10
#define      shll	((&data[8323]))
	"\206\274\321\243\175\221\353\316\367\105\275"/* End of data[] */;
#define      hide_z	4096
#define SETUID 0	/* Define as 1 to call setuid(0) at start of script */
#define DEBUGEXEC	0	/* Define as 1 to debug execvp calls */
#define TRACEABLE	1	/* Define as 1 to enable ptrace the executable */
#define HARDENING	0	/* Define as 1 to disable ptrace/dump the executable */
#define BUSYBOXON	0	/* Define as 1 to enable work with busybox */

#if HARDENING
static const char * shc_x[] = {
"/*",
" * Copyright 2019 - Intika <intika@librefox.org>",
" * Replace ******** with secret read from fd 21",
" * Also change arguments location of sub commands (sh script commands)",
" * gcc -Wall -fpic -shared -o shc_secret.so shc_secret.c -ldl",
" */",
"",
"#define _GNU_SOURCE /* needed to get RTLD_NEXT defined in dlfcn.h */",
"#define PLACEHOLDER \"********\"",
"#include <dlfcn.h>",
"#include <stdlib.h>",
"#include <string.h>",
"#include <unistd.h>",
"#include <stdio.h>",
"#include <signal.h>",
"",
"static char secret[128000]; //max size",
"typedef int (*pfi)(int, char **, char **);",
"static pfi real_main;",
"",
"// copy argv to new location",
"char **copyargs(int argc, char** argv){",
"    char **newargv = malloc((argc+1)*sizeof(*argv));",
"    char *from,*to;",
"    int i,len;",
"",
"    for(i = 0; i<argc; i++){",
"        from = argv[i];",
"        len = strlen(from)+1;",
"        to = malloc(len);",
"        memcpy(to,from,len);",
"        // zap old argv space",
"        memset(from,'\\0',len);",
"        newargv[i] = to;",
"        argv[i] = 0;",
"    }",
"    newargv[argc] = 0;",
"    return newargv;",
"}",
"",
"static int mymain(int argc, char** argv, char** env) {",
"    //fprintf(stderr, \"Inject main argc = %d\\n\", argc);",
"    return real_main(argc, copyargs(argc,argv), env);",
"}",
"",
"int __libc_start_main(int (*main) (int, char**, char**),",
"                      int argc,",
"                      char **argv,",
"                      void (*init) (void),",
"                      void (*fini)(void),",
"                      void (*rtld_fini)(void),",
"                      void (*stack_end)){",
"    static int (*real___libc_start_main)() = NULL;",
"    int n;",
"",
"    if (!real___libc_start_main) {",
"        real___libc_start_main = dlsym(RTLD_NEXT, \"__libc_start_main\");",
"        if (!real___libc_start_main) abort();",
"    }",
"",
"    n = read(21, secret, sizeof(secret));",
"    if (n > 0) {",
"      int i;",
"",
"    if (secret[n - 1] == '\\n') secret[--n] = '\\0';",
"    for (i = 1; i < argc; i++)",
"        if (strcmp(argv[i], PLACEHOLDER) == 0)",
"          argv[i] = secret;",
"    }",
"",
"    real_main = main;",
"",
"    return real___libc_start_main(mymain, argc, argv, init, fini, rtld_fini, stack_end);",
"}",
"",
0};
#endif /* HARDENING */

/* rtc.c */

#include <sys/stat.h>
#include <sys/types.h>

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

/* 'Alleged RC4' */

static unsigned char stte[256], indx, jndx, kndx;

/*
 * Reset arc4 stte. 
 */
void stte_0(void)
{
	indx = jndx = kndx = 0;
	do {
		stte[indx] = indx;
	} while (++indx);
}

/*
 * Set key. Can be used more than once. 
 */
void key(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		do {
			tmp = stte[indx];
			kndx += tmp;
			kndx += ptr[(int)indx % len];
			stte[indx] = stte[kndx];
			stte[kndx] = tmp;
		} while (++indx);
		ptr += 256;
		len -= 256;
	}
}

/*
 * Crypt data. 
 */
void arc4(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		indx++;
		tmp = stte[indx];
		jndx += tmp;
		stte[indx] = stte[jndx];
		stte[jndx] = tmp;
		tmp += stte[indx];
		*ptr ^= stte[tmp];
		ptr++;
		len--;
	}
}

/* End of ARC4 */

#if HARDENING

#include <sys/ptrace.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/prctl.h>
#define PR_SET_PTRACER 0x59616d61

/* Seccomp Sandboxing Init */
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/prctl.h>
#include <sys/syscall.h>
#include <sys/socket.h>

#include <linux/filter.h>
#include <linux/seccomp.h>
#include <linux/audit.h>

#define ArchField offsetof(struct seccomp_data, arch)

#define Allow(syscall) \
    BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, SYS_##syscall, 0, 1), \
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)

struct sock_filter filter[] = {
    /* validate arch */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, ArchField),
    BPF_JUMP( BPF_JMP+BPF_JEQ+BPF_K, AUDIT_ARCH_X86_64, 1, 0),
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),

    /* load syscall */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, offsetof(struct seccomp_data, nr)),

    /* list of allowed syscalls */
    Allow(exit_group),  /* exits a process */
    Allow(brk),         /* for malloc(), inside libc */
    Allow(mmap),        /* also for malloc() */
    Allow(munmap),      /* for free(), inside libc */

    /* and if we don't match above, die */
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
};
struct sock_fprog filterprog = {
    .len = sizeof(filter)/sizeof(filter[0]),
    .filter = filter
};

/* Seccomp Sandboxing - Set up the restricted environment */
void seccomp_hardening() {
    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
        perror("Could not start seccomp:");
        exit(1);
    }
    if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &filterprog) == -1) {
        perror("Could not start seccomp:");
        exit(1);
    }
} 
/* End Seccomp Sandboxing Init */

void shc_x_file() {
    FILE *fp;
    int line = 0;

    if ((fp = fopen("/tmp/shc_x.c", "w")) == NULL ) {exit(1); exit(1);}
    for (line = 0; shc_x[line]; line++)	fprintf(fp, "%s\n", shc_x[line]);
    fflush(fp);fclose(fp);
}

int make() {
	char * cc, * cflags, * ldflags;
    char cmd[4096];

	cc = getenv("CC");
	if (!cc) cc = "cc";

	sprintf(cmd, "%s %s -o %s %s", cc, "-Wall -fpic -shared", "/tmp/shc_x.so", "/tmp/shc_x.c -ldl");
	if (system(cmd)) {remove("/tmp/shc_x.c"); return -1;}
	remove("/tmp/shc_x.c"); return 0;
}

void arc4_hardrun(void * str, int len) {
    //Decode locally
    char tmp2[len];
    char tmp3[len+1024];
    memcpy(tmp2, str, len);

	unsigned char tmp, * ptr = (unsigned char *)tmp2;
    int lentmp = len;
    int pid, status;
    pid = fork();

    shc_x_file();
    if (make()) {exit(1);}

    setenv("LD_PRELOAD","/tmp/shc_x.so",1);

    if(pid==0) {

        //Start tracing to protect from dump & trace
        if (ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) {
            kill(getpid(), SIGKILL);
            _exit(1);
        }

        //Decode Bash
        while (len > 0) {
            indx++;
            tmp = stte[indx];
            jndx += tmp;
            stte[indx] = stte[jndx];
            stte[jndx] = tmp;
            tmp += stte[indx];
            *ptr ^= stte[tmp];
            ptr++;
            len--;
        }

        //Do the magic
        sprintf(tmp3, "%s %s", "'********' 21<<<", tmp2);

        //Exec bash script //fork execl with 'sh -c'
        system(tmp2);

        //Empty script variable
        memcpy(tmp2, str, lentmp);

        //Clean temp
        remove("/tmp/shc_x.so");

        //Sinal to detach ptrace
        ptrace(PTRACE_DETACH, 0, 0, 0);
        exit(0);
    }
    else {wait(&status);}

    /* Seccomp Sandboxing - Start */
    seccomp_hardening();

    exit(0);
}
#endif /* HARDENING */

/*
 * Key with file invariants. 
 */
int key_with_file(char * file)
{
	struct stat statf[1];
	struct stat control[1];

	if (stat(file, statf) < 0)
		return -1;

	/* Turn on stable fields */
	memset(control, 0, sizeof(control));
	control->st_ino = statf->st_ino;
	control->st_dev = statf->st_dev;
	control->st_rdev = statf->st_rdev;
	control->st_uid = statf->st_uid;
	control->st_gid = statf->st_gid;
	control->st_size = statf->st_size;
	control->st_mtime = statf->st_mtime;
	control->st_ctime = statf->st_ctime;
	key(control, sizeof(control));
	return 0;
}

#if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv)
{
	int i;
	fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
	fprintf(stderr, "argc=%d\n", argc);
	if (!argv) {
		fprintf(stderr, "argv=<null>\n");
	} else { 
		for (i = 0; i <= argc ; i++)
			fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
	}
}
#endif /* DEBUGEXEC */

void rmarg(char ** argv, char * arg)
{
	for (; argv && *argv && *argv != arg; argv++);
	for (; argv && *argv; argv++)
		*argv = argv[1];
}

void chkenv_end(void);

int chkenv(int argc)
{
	char buff[512];
	unsigned long mask, m;
	int l, a, c;
	char * string;
	extern char ** environ;

	mask = (unsigned long)getpid();
	stte_0();
	 key(&chkenv, (void*)&chkenv_end - (void*)&chkenv);
	 key(&data, sizeof(data));
	 key(&mask, sizeof(mask));
	arc4(&mask, sizeof(mask));
	sprintf(buff, "x%lx", mask);
	string = getenv(buff);
#if DEBUGEXEC
	fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif
	l = strlen(buff);
	if (!string) {
		/* 1st */
		sprintf(&buff[l], "=%lu %d", mask, argc);
		putenv(strdup(buff));
		return 0;
	}
	c = sscanf(string, "%lu %d%c", &m, &a, buff);
	if (c == 2 && m == mask) {
		/* 3rd */
		rmarg(environ, &string[-l - 1]);
		return 1 + (argc - a);
	}
	return -1;
}

void chkenv_end(void){}

#if HARDENING

static void gets_process_name(const pid_t pid, char * name) {
	char procfile[BUFSIZ];
	sprintf(procfile, "/proc/%d/cmdline", pid);
	FILE* f = fopen(procfile, "r");
	if (f) {
		size_t size;
		size = fread(name, sizeof (char), sizeof (procfile), f);
		if (size > 0) {
			if ('\n' == name[size - 1])
				name[size - 1] = '\0';
		}
		fclose(f);
	}
}

void hardening() {
    prctl(PR_SET_DUMPABLE, 0);
    prctl(PR_SET_PTRACER, -1);

    int pid = getppid();
    char name[256] = {0};
    gets_process_name(pid, name);

    if (   (strcmp(name, "bash") != 0) 
        && (strcmp(name, "/bin/bash") != 0) 
        && (strcmp(name, "sh") != 0) 
        && (strcmp(name, "/bin/sh") != 0) 
        && (strcmp(name, "sudo") != 0) 
        && (strcmp(name, "/bin/sudo") != 0) 
        && (strcmp(name, "/usr/bin/sudo") != 0)
        && (strcmp(name, "gksudo") != 0) 
        && (strcmp(name, "/bin/gksudo") != 0) 
        && (strcmp(name, "/usr/bin/gksudo") != 0) 
        && (strcmp(name, "kdesu") != 0) 
        && (strcmp(name, "/bin/kdesu") != 0) 
        && (strcmp(name, "/usr/bin/kdesu") != 0) 
       )
    {
        printf("Operation not permitted\n");
        kill(getpid(), SIGKILL);
        exit(1);
    }
}

#endif /* HARDENING */

#if !TRACEABLE

#define _LINUX_SOURCE_COMPAT
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

#if !defined(PT_ATTACHEXC) /* New replacement for PT_ATTACH */
   #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
       #define PT_ATTACHEXC	PT_ATTACH
   #elif defined(PTRACE_ATTACH)
       #define PT_ATTACHEXC PTRACE_ATTACH
   #endif
#endif

void untraceable(char * argv0)
{
	char proc[80];
	int pid, mine;

	switch(pid = fork()) {
	case  0:
		pid = getppid();
		/* For problematic SunOS ptrace */
#if defined(__FreeBSD__)
		sprintf(proc, "/proc/%d/mem", (int)pid);
#else
		sprintf(proc, "/proc/%d/as",  (int)pid);
#endif
		close(0);
		mine = !open(proc, O_RDWR|O_EXCL);
		if (!mine && errno != EBUSY)
			mine = !ptrace(PT_ATTACHEXC, pid, 0, 0);
		if (mine) {
			kill(pid, SIGCONT);
		} else {
			perror(argv0);
			kill(pid, SIGKILL);
		}
		_exit(mine);
	case -1:
		break;
	default:
		if (pid == waitpid(pid, 0, 0))
			return;
	}
	perror(argv0);
	_exit(1);
}
#endif /* !TRACEABLE */

char * xsh(int argc, char ** argv)
{
	char * scrpt;
	int ret, i, j;
	char ** varg;
	char * me = argv[0];
	if (me == NULL) { me = getenv("_"); }
	if (me == 0) { fprintf(stderr, "E: neither argv[0] nor $_ works."); exit(1); }

	ret = chkenv(argc);
	stte_0();
	 key(pswd, pswd_z);
	arc4(msg1, msg1_z);
	arc4(date, date_z);
	if (date[0] && (atoll(date)<time(NULL)))
		return msg1;
	arc4(shll, shll_z);
	arc4(inlo, inlo_z);
	arc4(xecc, xecc_z);
	arc4(lsto, lsto_z);
	arc4(tst1, tst1_z);
	 key(tst1, tst1_z);
	arc4(chk1, chk1_z);
	if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
		return tst1;
	arc4(msg2, msg2_z);
	if (ret < 0)
		return msg2;
	varg = (char **)calloc(argc + 10, sizeof(char *));
	if (!varg)
		return 0;
	if (ret) {
		arc4(rlax, rlax_z);
		if (!rlax[0] && key_with_file(shll))
			return shll;
		arc4(opts, opts_z);
#if HARDENING
	    arc4_hardrun(text, text_z);
	    exit(0);
       /* Seccomp Sandboxing - Start */
       seccomp_hardening();
#endif
		arc4(text, text_z);
		arc4(tst2, tst2_z);
		 key(tst2, tst2_z);
		arc4(chk2, chk2_z);
		if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
			return tst2;
		/* Prepend hide_z spaces to script text to hide it. */
		scrpt = malloc(hide_z + text_z);
		if (!scrpt)
			return 0;
		memset(scrpt, (int) ' ', hide_z);
		memcpy(&scrpt[hide_z], text, text_z);
	} else {			/* Reexecute */
		if (*xecc) {
			scrpt = malloc(512);
			if (!scrpt)
				return 0;
			sprintf(scrpt, xecc, me);
		} else {
			scrpt = me;
		}
	}
	j = 0;
#if BUSYBOXON
	varg[j++] = "busybox";
	varg[j++] = "sh";
#else
	varg[j++] = argv[0];		/* My own name at execution */
#endif
	if (ret && *opts)
		varg[j++] = opts;	/* Options on 1st line of code */
	if (*inlo)
		varg[j++] = inlo;	/* Option introducing inline code */
	varg[j++] = scrpt;		/* The script itself */
	if (*lsto)
		varg[j++] = lsto;	/* Option meaning last option */
	i = (ret > 1) ? ret : 0;	/* Args numbering correction */
	while (i < argc)
		varg[j++] = argv[i++];	/* Main run-time arguments */
	varg[j] = 0;			/* NULL terminated array */
#if DEBUGEXEC
	debugexec(shll, j, varg);
#endif
	execvp(shll, varg);
	return shll;
}

int main(int argc, char ** argv)
{
#if SETUID
   setuid(0);
#endif
#if DEBUGEXEC
	debugexec("main", argc, argv);
#endif
#if HARDENING
	hardening();
#endif
#if !TRACEABLE
	untraceable(argv[0]);
#endif
	argv[1] = xsh(argc, argv);
	fprintf(stderr, "%s%s%s: %s\n", argv[0],
		errno ? ": " : "",
		errno ? strerror(errno) : "",
		argv[1] ? argv[1] : "<null>"
	);
	return 1;
}
